package cn.jingyuan.bee.utils.bean;

import cn.jingyuan.bee.utils.lang.SimpleCache;

/**
 * Bean 属性缓存<br>
 * 缓存用于防止多次反射造成的性能问题
 */
public enum BeanDescCache {

    /** 实例 */
    INSTANCE;

    private final SimpleCache<Class<?>, BeanDesc> bdCache = new SimpleCache<>();

    /**
     * 获得属性名和 {@link BeanDesc}Map 映射
     *
     * @param beanClass Bean 的类
     *
     * @return 属性名和 {@link BeanDesc} 映射
     */
    public BeanDesc getBeanDesc(Class<?> beanClass) {
        return bdCache.get(beanClass);
    }

    /**
     * 加入缓存
     *
     * @param beanClass Bean 的类
     * @param beanDesc 属性名和 {@link BeanDesc} 映射
     */
    public void putBeanDesc(Class<?> beanClass, BeanDesc beanDesc) {
        bdCache.put(beanClass, beanDesc);
    }
}
